import { MD5,lib,mode, pad, AES, enc } from 'crypto-js';

// 生成 AES 密钥
export function generateAESKey() {
  try {
    return lib.WordArray.random(16); // 尝试使用 crypto-js 内部随机
  } catch (error) {
    console.warn('crypto-js random failed, using fallback:', error);
    // fallback：使用时间戳 + 随机数生成种子
    const seed = Date.now() + Math.random() + Math.random();
    return MD5(seed.toString()).create(); // 返回 WordArray 而不是字符串
  }
}

// 使用 AES 加密数据
export function encryptAES(data, key, iv) {
  const ciphertext = AES.encrypt(
    JSON.stringify(data),
    key,
    {   
        iv: iv, 
        mode: mode.CBC,
        padding: pad.Pkcs7,
    }
  );
  // console.log(iv);
  return ciphertext.toString()
}

// 使用 AES 解密数据
export function decryptAES (ciphertext, key, iv) {
    const data = AES.decrypt(
        ciphertext,
        key,
        {
            iv: iv,
            mode: mode.CBC,
            padding: pad.Pkcs7
        }
    );
    return JSON.parse(data.toString(enc.Utf8));
}
